package com.create.myworld.factory;

import com.create.myworld.sse.NormalSSE;

/**
 * @author zcw
 * 世界初始化工厂基类
 */
public abstract class WorldFactory {

    /**
     * 当前工厂名称
     */
    protected String name;

    /**
     * 责任链的下一个工厂
     */
    private WorldFactory next;

    /**
     * 设置下一个节点的工厂
     *
     * @param next
     */
    public void setNext(WorldFactory next) {
        this.next = next;
    }

    /**
     * 生产
     */
    protected abstract void produce();

    /**
     * 开始
     */
    public final void start() {
        NormalSSE.contentList.add(this.name + "开始工作");
        produce();
        NormalSSE.contentList.add(this.name + "工作完成");
        if (next != null) {
            next.start();
        } else {
            NormalSSE.contentList.add("世界初始化完成");
        }
    }
}
